-
Notifications
You must be signed in to change notification settings - Fork 5.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
executor: reset kvRange in TableReaderExec.Close #19447
Conversation
@XuHuaiyu PTAL and please help assign reviewer. |
/assign @ichn-hu |
executor/table_reader.go
Outdated
dagPB *tipb.DAGRequest | ||
startTS uint64 | ||
kvRanges []kv.KeyRange | ||
kvRangesBackup []kv.KeyRange |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A better way is moving the buildResp
out of Open
to Next
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A Backup
makes me feel weird.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am feeling ackward as well, perhaps a better name like initialKvRanges
would make it less weird, while I did not quite get it what you mean by moving the buildResp to Next
, and I don't think it would solve the problem here. The problem is, whenever buildResp
is called, new ranges will be added to kvRanges
, even if it is put under Next
, as long as it is not cleaned, the redundant ranges will be remained.
cb50f01
to
62f5b83
Compare
LGTM |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
/merge |
/run-all-tests |
@ichn-hu merge failed. |
/run-common-test |
Signed-off-by: ti-srebot <ti-srebot@pingcap.com>
cherry pick to release-3.0 in PR #19468 |
Signed-off-by: ti-srebot <ti-srebot@pingcap.com>
cherry pick to release-3.1 in PR #19469 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
Signed-off-by: ti-srebot <ti-srebot@pingcap.com>
cherry pick to release-4.0 in PR #19470 |
What problem does this PR solve?
Issue Number: close #19431 and close #19435
Problem Summary:
When union scan is under apply's inner side, it will be called multiple times, and for the memTableReader that reads the dirty table, it uses kvRanges from the base table scan as the range, while the base table scanner will update the kvRanges, it does not set it back when it is closed, therefore the kvRange array will grow, and duplicated rows will be read from the dirty table, resulted in errors.
What is changed and how it works?
What's Changed:
Add a back up kvRange variable, reset it upon the close of table reader.
Related changes
Check List
Tests
Side effects
N/A
Release note